\documentclass[10pt,norsk,a4paper]{article}

\usepackage[utf8]{inputenc}
\usepackage{babel,graphicx}

\usepackage{graphicx}

\usepackage{times}
\usepackage{url}
\bibliographystyle{holeproof}

\title{Dynamic Prestentation Generator \\ Part I: Proposal}
\author{Lars Hopland Nestås - lma029@student.uib.no \\ Tobias Rusås Olsen -
tol060@student.uib.no \\Gruppe 7}
\date{\today}

\tolerance = 5000
% LaTeX er normalt streng n�r det gjelder linjebrytingen.
\hbadness = \tolerance % Vi vil v�re litt mildere, s�rlig fordi norsk har s�
\pretolerance = 2000
% mange lange sammensatte ord.


\begin{document}

\begin{titlepage}
\maketitle
\thispagestyle{empty}


\begin{abstract}
Sammendrag kommer her\ldots 
\end{abstract}

\end{titlepage}

\pagenumbering{arabic}

\newpage

\section{Oppbygging av DPG}

\subsection{Introduksjon}

DPG er en forkortelse for Dynamic Presentation Generator, som det ligger i
navnet, så genererer systemet presentasjoner på en ikke-statisk måte. Dette
betyr at innholdet på siden kan endres utfra valg brukerene av systemet gjør.
Endringene man gjør er ikke nødvendigvis knyttet mot sin egen bruker, faktisk
kan en bruker av systemet endre måten en annen bruker nytter systemet. En presentasjon er
basert på presentasjonsmønstre, som definerer strukturen til en side. Slik
mønstre promoterer gjenbruk.

Systemet brukes i dag ved Universitet i Bergen som
en del av JAva FjernUndervisning (JAFU). Her brukes systemet som en nettside
der studenter kan finne nødvendig informasjon om kurset, og få tilgang på
diverse ressurser og beskjeder som kursansvarlig legger ut. Versjonen som blir
brukes i JAFU i dag er versjon 1.0. Den versjonen vi vil ta for oss er versjon
2.0, som er den nyeste versjonen.

Selve systemet er laget ved hjelp av Java Server Pages (JSP) og XLST, og
rammeverket Spring. (INSERT MORE, PLEASE) og XML.
%Du hørte mannen!

\subsection{Roller}
I DPG og Webucator benytter man roller for å kunne gi forskjellig
adgangskontroll til forskjellige brukere. Det benyttes tre roller.

\subsubsection{Presentation Manager}
Presentation Manager sin rolle går ut på å opprette, endre eller slette
presentasjoner. Denne rollen kontrollerer med andre ord livssyklusen til en
presentasjon. Også kjent under navnet ``administrator''.

\subsubsection{Presentation Content Editor}
PCE sin rolle er å redigere innholdet i presentasjoner. Brukere med denne
rollen kan legge ut ny informasjon på sider, eller endre informasjonen som
ligger inne. De kan ikke endre selve presentasjonen, så de kan ikke opprette
nye sider. Kalles også ``publisher''

\subsubsection{Presentation Viewer}
Presentation Viewer representerer som oftest de faste brukerene av
systemet. De har tilgang til å lese all informasjon som ligger lagt ut, men har
ikke muligheten til å endre informasjonen som ligger inne. Det er i denne
rollen det ville vært mest kritisk om man fant sikkerhetsfeil, ettersom de
andre rollene gjerne er brukere som stoles på av eierene av systemet. Også kalt
``reader''

\subsection{Tilknyttet system}
Systemet er sterkt knyttet opp mot systemet Webucator, som tar seg av
brukerhåndtering. I Webucator kan man legge til nye
brukere i systemet, og/eller endre rollene de har blitt tildelt.

\subsection{Funksjonalitet}
Funksjonaliteten til systemet er knyttet opp mot rollene til brukerene i
systemet. Readers kan navigere gjennom nettstedet og lese innholdet på siden,
publishers kan endre innholder som er lagt ut på siden, mens administrators kan endre presentasjoner.

\subsection{Underliggende strukturer}

Data i 

\subsubsection{XML}
Store deler av systemet er definert ved hjelp av XML, blant annet
presentasjonsmønstrene. 

\subsubsection{XPath}
Systemet benytter seg av XPath for å finne informasjon i XML-filer.

\subsubsection{Spring Framework}
DPG er utviklet ved hjalp av rammeverket Spring.

\subsubsection{}


\section{Sikkerhetsanalyse av DPG 2.0}
I arbeidet med analysering av DPG 2.0 vil vi ta utgangspunkt i ``The Seven
Pernicious Kingdoms''[Ref\ldots]. 


\subsection{Input validering}
Dagens DPG system er rollebasert og skiller mellom ”Reader”, ”Publisher” og
”Administrator”. En ”Reader” har ikke tilgang til DPG sin administrasjonsside, og
innputt som denne brukeren sender til systemet vil i utgangspunktet skje i form
av URL-parameter. Fig. ?? viser et eksempel på manglende validering av input,
slik at XSS er mulig i Presentation Content Editor.

\begin{figure}[htbp]
  \begin{center}
\includegraphics[width=300]{xss2.png}
\caption{Eksempel på XSS i Presentation Content Editor.
Javascript kan legges til i statusMessage parameteren, siden
denne ikke blir valitert.}
\label{fig:xss}
 \end{center}

\end{figure}

”Publisher” og ”Administrator” har mulighet til å legge til og redigere innhold
på en side. Artikler kan legges til og redigeres ved hjelp av WYSIWYG editoren. Editoren
mangler i stor grad inputvalidering slik den fremstår i dag. Og persistent XSS er
mulig. Derfor er det viktig med validering av data før en lagrer de i en database
eller i XML-fil. I tillegg må en huske på at data som blir lest fra
XML-fil og database også er input, som også må valideres før de blir presentert
for brukeren. Vi vil undersøke om systemet er sårbart for XML-injection og
XPath-injection, ettersom dette er teknologier systemet bruker mye.

Ved å bruke verktøyene for statisk kodeanalyse vil vi forsøke å identifisere de
delene av applikasjonen som tar imot input, hvordan inputvalidering
eventuellt skjer i dag, og om de er mulig å definere ``Trust Boundaries''.


\subsection{Security Features}
Brukadministrasjon for DPG blir i stor grad håndtert av systemet Webucator.
Likevel vil det være interessant å se på samspillet mellom DPG og Webucator, og
hvordan autentisering, autorisasjon og sesjonshåndtering er implementert.

DPG bruker en PostgreSQL database. Kommunikasjon med databasen må også
undersøkes og evalueres.

\begin{figure}[htp]

\includegraphics[width=300]{error.png}
\caption{Eksempel på utskrift av stack trace ved feil i
URL-parameter}\label{fig:error}
\end{figure}

\subsection{Feilhåndtering}
God feilhåndtering er viktig. Både med tanke på brukervennlighet, men også ut fra
et sikkerhetsperspektiv. Endring av enkelte URL-parametre kan gi oss
feilmeldinger som avslører noe av DPG sin indre struktur, som for eksempel
mappestruktur, klassenavn og pakkestruktur. Slik informasjonslekaskje kan
være nyttig for en angiper i forbindelse med planlegging og rafinering av et
angrep mot applikasjonen.
% \usepackage{graphics} is needed for \includegraphics


\subsection{Kodekvalitet}

\subsection{Encapsulation}


% Vi vil fokusere mest på 1. Input Validation and Representation, 3. Security
%Features, 5. Error Handling, 6. Code Quality og 7. Encapsulation.
%


\end{document}

